A computer network enables various devices, such as processors, mass storage devices, and printers to communicate with each other over high speed bi-directional communication links. The devices are connected, that is, interfaced, to the network, and thus transfer data to and from the network, through nodes. The nodes are interconnected by the communication links, with one node on either end of the link.
Data and control messages are transmitted over the network communication links in the form of frames. A frame is a stream of bits in a particular format. It contains, in addition to the data or control message, network specific information, such as the identity of the transmitting node or the identity of the node and/or the connected device to which the frame is directed.
A frame is sectioned into various fields, such as an information field, an address field, etc. It begins with a beginning-of-frame flag field, which is a field containing a predetermined number of bits set in a specific pattern, and it ends with an end-of-frame flag field. The fields between the beginning-of-frame flag and the end-of-frame flag are collectively referred to as the frame message.
The frame also contains error detection information which enables a receiving node to determine if the frame message is error-free. The error detection information, commonly referred to as a frame check sequence, is placed in a frame check sequence field and transmitted as part of the frame.
Each node receiving a frame manipulates the information between the two flags to determine if the frame message is error-free. If the node determines that the frame is error free, it may then use the frame data or control message, as appropriate, and/or re-compute the frame check sequence and transmit the frame over a communication link to a next node.
One technique for manipulating a frame and the associated frame check sequence is disclosed in U.S. Pat. 3,872,430 to Boudreau, et al., which is assigned to International Business Machines Corporation (IBM). Basically, a node receiving a frame manipulates the entire frame, including the frame check sequence, by encoding the information using the same code which was used earlier to generate the frame check sequence. Specifically, the node detects the flag that signifies the beginning of the frame message and encodes all the information between the detected flag and the flag signifying the end of the frame message. If the encoding results in a predetermined number, the node determines that the frame is error-free.
Nodes in networks using the International Standard Organization (ISO) High-Level Data Link Control (HDLC) network protocol may operate using one of two modes of operation, namely, a 16-bit mode or a 32-bit mode. [For more information relating to the modes of operation see ISO Standard 3309 sections 3.6.2-3.6.3] Some nodes are capable of operating in either mode while some nodes may operate in only one of the two modes. When a node computes the frame cheek sequence it uses an ISO standard code designed for either the 16-bit mode or the 32-bit mode. In order that a receiving node may interpret the frame check sequence correctly, the transmitting node and the receiving node must be operating in the same mode.
Each time a communication link is initialized, a notification/negotiation takes place between the nodes at either end of the link in order to establish the mode in which the nodes will operate over the link. The nodes cannot transmit data or control frames over the link until the operating mode for the link is established. Thus the link is essentially useless until the operating mode is set.
The nodes notify each other of their preferred mode of operation, that is, either 16-bit or 32-bit, by sending an XID (exchange identification) frame over the communications link. The XID frame contains the operating mode information as well as information concerning certain other operating characteristics of the originating node such as the identity of the node. The XID frames contain frame check sequences, also.
A node receiving an XID frame tries to check the validity of the frame message using the frame check code associated with the node's preferred mode of operation. Thus the node, operating in a particular mode, for example, the 16-bit mode, manipulates the XID frame message using an ISO frame check code designed for the 16-bit mode. If the frame contains a frame check sequence corresponding to the 32-bit mode, however, the node cannot verify the frame message. If the frame cannot be verified, the node may either ignore it and wait for a valid XID frame or start a negotiation with the transmitting node. A node which has sent an XID frame and not received an appropriate response may similarly transmit another XID frame or start a negotiation.
What is needed is a mechanism which allows nodes operating in either of the two ISO modes of operation to inform each other of their operating characteristics. Thus, for example, a node operating in 32-bit mode which receives an XID frame from a node operating in 16-bit mode will be able to interpret the frame correctly and the nodes can then easily initialize their common communication link.